1. Field of the Invention
The invention generally relates to configuring ports of a storage domain. More specifically, the invention relates to configuring ports within a Serial Attached Small Computer Systems Interface (“SAS”) domain to operate according to certain routing attributes.
2. Discussion of Related Art
Small Computer Systems Interface (“SCSI”) is a set of American National Standards Institute (“ANSI”) standard electronic interface specification that allow, for example, computers to communicate with peripheral hardware. Common SCSI compatible peripheral devices may include: disk drives, tape drives, Compact Disc-Read Only Memory (“CD-ROM”) drives, printers and scanners. SCSI as originally created included both a command/response data structure specification and an interface and protocol standard for a parallel bus structure for attachment of devices. SCSI has evolved from exclusively parallel interfaces to include both parallel and serial interfaces. SCSI now refers to a plurality of primary commands common to most devices and command sets to meet the needs of specific device types as well as a variety of interface standards and protocols.
The collection of primary commands and other command sets may be used with SCSI parallel interfaces as well as with serial interfaces. The serial interface standards that support SCSI command processing include: Fibre Channel, Serial Bus Protocol (used with the Institute of Electrical and Electronics Engineers 1394 FireWire physical protocol; “IEEE 1394”) and the Serial Storage Protocol (SSP). SCSI interfaces and commands are also used to network storage devices with processing devices having serial interfaces such as Serial Attached SCSI (“SAS”) and Serial Advanced Technology Attachment (“SATA”). These applications are often referred to as storage networks. Such SCSI storage networks are often used in large storage systems having a plurality of disk drives to store data for organizations and/or businesses. The network architecture allows storage devices to be physically dispersed in an enterprise while continuing to directly support SCSI commands directly. This architecture allows for distribution of the storage components in an enterprise without the need for added overhead in converting storage requests from SCSI commands into other network commands and then back into lower level SCSI storage related commands. Those skilled in the art are familiar with SAS and SATA standards as well as other SCSI related specifications and standards. Information about such interfaces and commands is generally obtainable at the website www.t10.org.
An SAS network typically comprises one or more SAS initiators coupled to one or more SAS targets via one or more SAS expander devices. In general, as is common in all SCSI communications, SAS initiators initiate communications with SAS targets. The expander devices expand the number of ports of an SAS network domain. The expander devices are often arranged such that the path from any SAS initiator to any particular SAS target may pass through multiple expander devices. In addition, there may exist multiple paths through the network of expanders to establish communications between a particular initiator and a particular target. The expander devices (as well as initiator devices) therefore also include routing tables that enable SAS initiators and SAS devices to route communications through the network of expander devices.
The SAS initiators may also perform as control elements of the network to control and configure the devices of the network for routing information and other attributes. For example, an SAS initiator may require information about a particular SCSI disk drive coupled to an expander device network. The SAS initiator, therefore, sends a SCSI command identifying the desired target device as the ultimate destination for the command. The initiator directs the command to an adjacent expander device of the expander device network. The expander device has routing tables in which it looks for the identified target device and thereby determines the next device along the path to the identified target—perhaps another expander. Each expander similarly consults its routing tables to forward the command further along a path toward the identified target until the intended disk drive target device receives the command. Status information or data generated by the target device to be returned to the initiator is similarly routed through the expander devices until it reaches the appropriate initiator of the SCSI command. Typically, subtractive routing is used to return the response along a path where table routing was used to direct the request. Those skilled in the art will note that table routing is always used in the case of a “fan-out” expander as provided in the SAS specifications.
Prior to commencing normal SAS network domain operations, a topology of the network domain must be identified so that an SAS initiator may correctly configure routing information to route commands and status through the expander device network. When the SAS network is initialized, an SAS initiator may perform a discovery process that determines the topology of the network domain and configures the routing tables of the expander devices within that domain. Such a discovery process may utilize a Serial Management Protocol (“SMP”) Report General request and Discover request to determine the topology of the SAS domain (i.e., of the network). SMP protocols and commands are defined in the SAS standards and are used by SAS devices to communicate management information with other SAS devices in an SAS domain. In general, the topology of the network may be determined through the discovery process by a recursive traverse through all expander devices of the SAS domain. An example of such a recursive process is provided in an appendix of the SAS specifications generally available at the web site noted above.
As a preliminary step generally presumed to precede the discovery process, an administrator must set a “routing attribute” associated with each port of an SAS device—in particular the routing attribute needs to be set for each port (also referred to as a Phy) of each expander device. The SAS standards define a “routing attribute” associated with each port that generally indicates the direction of flow through the port as toward target devices or toward initiator devices. “Subtractive routing” as defined in the SAS specification refers to routing between expander devices in a consistent “non-changing” direction through an SAS network domain, such as all routing between expander devices flowing towards an SAS initiator. “Table routing” as defined in the SAS specification refers to routing between expander devices in an opposite direction of subtractive routing. “Direct routing” attribute indicates that the port is coupled directly to a port of an end device (an initiator or target device).
As presently known in the art, configuration of routing attributes of expander device ports or Phys is a manual process performed prior to the discovery process described above for discovering the topology of the SAS domain. When a new SAS domain is initially installed or when an existing SAS domain is altered by addition or subtraction of one or more expanders or other devices, the routing attributes of all ports of all expanders may require re-configuration. While SAS initiators and target devices typically do not require port route attribute configuration as they are able to configure their respective ports (they are always direct routing), expander devices presently require manual port configuration to associate the subtractive routing attributes and the table routing attributes with ports of the expanders. Since there can be as many as 128 ports or Phys in each SAS device and virtually any number of SAS devices within a single network domain, manually configuring the ports is a tedious and time consuming process and delays operation of the storage network. Further, manual processes for configuring the routing attributes of each port of each device are prone to human errors.
In view of the above discussion, it is evident that there is a need for improved systems and methods for configuring routing attributes of ports of an SAS network domain.